package com.Shuang.Frame;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.lang.reflect.Field;

//创建框架，可以实现将各种类的各个信息保存到文件中去
public class FrameSaveInfo {
    public static void SaveInfo(Object obj) throws Exception {
        //1 创建一个类对象，拿到这个类
        Class objClass = obj.getClass();

        //2 根据类对象取到这个类中的全部成员变量对象，放到成员变量数组中去
        Field[] fields = objClass.getDeclaredFields();

        //4 要对成员变量保存到文件中去，创建打印流来操作，可以追加数据
        PrintStream ps = new PrintStream(new FileOutputStream("src\\data.txt", true));

        //拿到类的名字进行展示是哪个类
        String cName = objClass.getSimpleName();
        ps.println("----------------" + cName + "-----------------");

        //3 遍历这个数组取到每个成员变量对其进行操作
        for (Field field : fields) {
            //要得到下面私有的成员变量名字之类的要先暴力反射，表示禁止检查访问权限
            field.setAccessible(true);
            //得到成员对象的名字
            String name = field.getName();
            //每个成员变量 具体的值
            Object value = field.get(obj);
            //将每个成员变量和对应的值写到文件中去
            ps.println(name + " = " + value);
        }
        //写完释放资源
        ps.close();
    }
}
